package co.edu.udea.iw.dao;

import java.util.List;

import co.edu.udea.iw.dto.TipoDispositivo;
import co.edu.udea.iw.exception.IWDaoException;

/**
 * Interface que define los metodos que va a proveer el dao de Tipo de
 * Dispositivo
 * 
 * @author Santiago Ruiz
 * @author Bladimir Velez
 *
 */

public interface TipoDispositivoDAO {
	/**
	 * Entrega los datos de un tipo de dispositivo dado su identificador
	 * 
	 * @param tipoD
	 *            String que identificador del tipo de dispositivo
	 * @return instancia con los datos del tipo de dispositivo obtenido, si no
	 *         existe el tipo de dispositivo retorna null.
	 * @throws IWDaoException
	 */
	public TipoDispositivo obtenerTipoDispositivo(String tipoD)
			throws IWDaoException;

	/**
	 * Entrega la lista de todos los tipo de dispositivos existentes en base de
	 * datos
	 * 
	 * @return lista tipo de dispositivos
	 * @throws IWDaoException
	 */
	public List<TipoDispositivo> obtenerTiposDispositivos()
			throws IWDaoException;

	/**
	 * Agrega un tipo de dispositivo
	 * 
	 * @param tipoDispositivo
	 *            TipoDispositivo a agregar
	 * @return void
	 * @throws IWDaoException
	 */
	public void agregarTipoDispositivo(TipoDispositivo tipoDispositivo)
			throws IWDaoException;

	/**
	 * Elimina un tipo de dispositivo
	 * 
	 * @param tipoDispositivo
	 *            TipoDispositivo a eliminar
	 * @return void
	 * @throws IWDaoException
	 */
	public void eliminarTipoDispositivo(TipoDispositivo tipoDispositivo)
			throws IWDaoException;

	/**
	 * Actualiza un tipo de dispositivo
	 * 
	 * @param tipoDispositivo
	 *            TipoDispositivo a actualizar
	 * @return void
	 * @throws IWDaoException
	 */
	public void actualizarTipoDispositivo(TipoDispositivo tipoDispositivo)
			throws IWDaoException;

}
